package com.ktgj.train.mapper;

import java.util.List;

import com.ktgj.train.domain.TrainCRMOrder;
import com.ktgj.train.domain.TrainOrder;
import com.ktgj.train.domain.TrainOrderApp;
import com.ktgj.train.domain.TrainOrderCRM;
import com.ktgj.train.domain.vo.TrainOrderVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 订单Mapper接口
 * 
 * @author ruoyi
 * @date 2021-11-29
 */
@Repository
public interface TrainOrderMapper
{
    /**
     * 查询订单
     * 
     * @param orderid 订单ID
     * @return 订单
     */
    public TrainOrder selectTrainOrderById(Long orderid);

    /**
     * 查询订单列表
     * 
     * @param trainOrder 订单
     * @return 订单集合
     */
    public List<TrainOrder> selectTrainOrderList(TrainOrder trainOrder);

    /**
     * 新增订单
     * 
     * @param trainOrder 订单
     * @return 结果
     */
    public int insertTrainOrder(TrainOrder trainOrder);

    /**
     * 修改订单
     * 
     * @param trainOrder 订单
     * @return 结果
     */
    public int updateTrainOrder(TrainOrder trainOrder);

    public int updateByTrainOrder(TrainOrderVo trainOrderVo);

    /**
     * 删除订单
     * 
     * @param orderid 订单ID
     * @return 结果
     */
    public int deleteTrainOrderById(Long orderid);

    /**
     * 批量删除订单
     * 
     * @param orderids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTrainOrderByIds(Long[] orderids);

    TrainOrderVo queryOrderDetail(String orderNumber);

    Integer queryCountOrderItem(String orderNumber);

    /**
     * 火车票（退票）
     * */
    public TrainOrder selectTrainOrderByOrderID(Long orderid);

    /**
     * 订单详情
     * @param customerId
     * @param orderNumber
     * @return
     */
    public TrainOrder queryTrainOrder(@Param("customerId") Long customerId, @Param("orderNumber") String orderNumber);

    //保存占座回调
    public int updateByCallback(TrainOrder trainOrder);

    public Long selectOrderId(String orderPartnerNumber);

    /**
     * 收银台
     * @param jsjId
     * @param orderNumber
     * @return
     */
    public TrainOrder selectTrainOrder(@Param("jsjId") Long jsjId, @Param("orderNumber") String orderNumber);

    public List<TrainOrder> queryTrainOrders();

    /**
     * 查询订单
     *
     * @param orderNumber 订单编号
     * @return 订单
     */
    public TrainOrder selectTrainOrderByOrderId(String orderNumber);

    /**
     * 查询会员火车票订单列表
     * */
    public List<TrainOrder> selectTrainOrderNum(String membercardno);

    /**
     * 火车票订单列表
     * */
    public List<TrainOrder> trainOrderList(@Param("traveldate") String traveldate,
                                           @Param("departuretime") String departuretime,
                                           @Param("arrivaltime") String arrivaltime);

    /**
     * 火车票订单列表（CRM）
     * @param order
     * @return
     */
    public List<TrainOrderCRM> trainOrder(TrainCRMOrder order);

    public int queryTrainOrderNumber(@Param("customerId") Long customerId);

    /**
     * 订单列表app
     * @param customerId
     * @return
     */
    public List<TrainOrderApp> orderApp(Long customerId);

    /**
     * 行程火车票订单
     * */
    public TrainOrder journeyTrainOrder(Long orderid);

    List<TrainOrder> getOrderListThings();
}
